/*
事件绑定也是异步编程 等到
定时器异步，定时器里面函数等到规定时间才会执行。
定时器设定一个等待时间，到达时间也不一定执行（设置的是最小等待时间），如果当前还有其他同步任务正在处理，定时器到达了规定时间也不执行，继续等待。
*/

// let n = 0
// setTimeout(() => {
//     console.log(++n) //先自加再赋值
// }, 1000)
// console.log(n) //先输出0 再1
// // 死循环只输出一次0 
// while(true){

// }

// for (var i = 0; i < 5; i++) {
//     (function (i) {
//         setTimeout(function () {
//             console.log(i)
//         }, 1000)
//     })(i)

// }
setTimeout(() => {
    console.log(1);
}, 20);
console.log(2);
setTimeout(() => {
    console.log(3);
}, 10);
setTimeout(() => {
    console.log(4);
}, 100);
for (let i = 0; i < 90000000; i++) {

}
console.log(5);